package com.woniuxy.util;

import java.util.List;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
/**
 * @Description: 该工具类的作用是将List<PO> 类型转换为 List<DTO>
 * @Param:
 * @return:
 * @Date: 2025/3/31
 */
public class ListValueConvertUtils {

    /**
     * 通用查询转换方法
     * @param queryFunction  查询数据的函数（返回 List<T>）
     * @param convertFunction 类型转换函数（T -> R）
     * @return 转换后的 List<R>
     * ListValueConvertUtils.listConvert(cardMapper::queryAllMembershipLevel, MembershipLevelDTO::new)
     */
    public static <T, R> List<R> listConvert(Supplier<List<T>> queryFunction, Function<T, R> convertFunction) {
        // 执行查询
        List<T> tempList = queryFunction.get();

        // 进行转换 (List<T> -> List<R>)
        return tempList.stream().map(convertFunction).collect(Collectors.toList());
    }

    /*
        单纯对list进行转换
     */
    public static <T, R> List<R> listConvert(List<T> list, Function<T, R> convertFunction) {
        // 进行转换 (List<T> -> List<R>)
        return list.stream().map(convertFunction).collect(Collectors.toList());
    }
}
